package validators

import (
	"github.com/gin-gonic/gin"
)

// 自定义错误类型
type ValidationErrors map[string][]string

const contextKey = "validatorErrors"

// AddError 添加错误到上下文
func AddError(c *gin.Context, field string, message string) {
	errors := getErrors(c)
	if _, exists := errors[field]; !exists {
		errors[field] = []string{message}
	} else {
		errors[field] = append(errors[field], message)
	}
	c.Set(contextKey, errors)
}

// HasErrors 检查是否有错误
func HasErrors(c *gin.Context) bool {
	return len(getErrors(c)) > 0
}

// GetErrors 获取所有错误
func GetErrors(c *gin.Context) ValidationErrors {
	return getErrors(c)
}

// getErrors 从上下文中获取错误集合
func getErrors(c *gin.Context) ValidationErrors {
	if errors, exists := c.Get(contextKey); exists {
		return errors.(ValidationErrors)
	}
	return make(ValidationErrors)
}
